local temp = owner local owner if game:GetService("RunService"):IsClient() then owner = game:GetService("Players").LocalPlayer else owner = temp end temp = nil function sandbox(var,func) local env = getfenv(func) local newenv = setmetatable({},{ __index = function(self,k) if k=="script" then return var elseif k == "realscript" then return script else return env[k] end end, }) setfenv(func,newenv) return func end local cors = {} local ins = {mas = Instance.new("Model",game:GetService("Lighting"))} ins[([=[Model0]=])] = Instance.new("Model") ins[([=[Model1]=])] = Instance.new("Model") ins[([=[Part2]=])] = Instance.new("Part") ins[([=[SpecialMesh3]=])] = Instance.new("SpecialMesh") ins[([=[Part4]=])] = Instance.new("Part") ins[([=[SpecialMesh5]=])] = Instance.new("SpecialMesh") ins[([=[Part6]=])] = Instance.new("Part") ins[([=[SpecialMesh7]=])] = Instance.new("SpecialMesh") ins[([=[Model8]=])] = Instance.new("Model") ins[([=[Part9]=])] = Instance.new("Part") ins[([=[SpecialMesh10]=])] = Instance.new("SpecialMesh") ins[([=[Weld11]=])] = Instance.new("Weld") ins[([=[Part12]=])] = Instance.new("Part") ins[([=[SpecialMesh13]=])] = Instance.new("SpecialMesh") ins[([=[Script14]=])] = Instance.new("Script") ins[([=[Model0]=])].Name = [=====[Tank]=====] ins[([=[Model0]=])].Parent = ins[([=[mas]=])] ins[([=[Model0]=])].PrimaryPart = ins[([=[Part2]=])] ins[([=[Model1]=])].Name = [=====[body]=====] ins[([=[Model1]=])].Parent = ins[([=[Model0]=])] ins[([=[Part2]=])].Name = [=====[bod]=====] ins[([=[Part2]=])].Parent = ins[([=[Model1]=])] ins[([=[Part2]=])].CFrame = CFrame.new(208.381317, 2.22636271, -90.0157928, -1, 0, 0, 0, 1, 0, 0, 0, -1) ins[([=[Part2]=])].Position = Vector3.new(208.38131713867188, 2.226362705230713, -90.01579284667969) ins[([=[Part2]=])].Rotation = Vector3.new(-180, 0, -180) ins[([=[Part2]=])].Size = Vector3.new(23.28107261657715, 4.452668190002441, 12.106224060058594) ins[([=[Part2]=])].Orientation = Vector3.new(0, 180, 0) ins[([=[Part2]=])].Anchored = true ins[([=[SpecialMesh3]=])].Parent = ins[([=[Part2]=])] ins[([=[SpecialMesh3]=])].MeshId = [=====[rbxassetid://1379685716]=====] ins[([=[SpecialMesh3]=])].Scale = Vector3.new(2.2229702472686768, 2.2229702472686768, 2.2229702472686768) ins[([=[SpecialMesh3]=])].TextureId = [=====[rbxassetid://1379699159]=====] ins[([=[SpecialMesh3]=])].MeshType = Enum.MeshType.FileMesh ins[([=[Part4]=])].Name = [=====[MeshPart]=====] ins[([=[Part4]=])].Parent = ins[([=[Model1]=])] ins[([=[Part4]=])].CFrame = CFrame.new(208.246307, 4.11022758, -90.0052872, -1, 0, 0, 0, 1, 0, 0, 0, -1) ins[([=[Part4]=])].Position = Vector3.new(208.24630737304688, 4.110227584838867, -90.00528717041016) ins[([=[Part4]=])].Rotation = Vector3.new(-180, 0, -180) ins[([=[Part4]=])].Size = Vector3.new(24.348304748535156, 5.756950378417969, 12.505230903625488) ins[([=[Part4]=])].Orientation = Vector3.new(0, 180, 0) ins[([=[Part4]=])].Anchored = true ins[([=[SpecialMesh5]=])].Parent = ins[([=[Part4]=])] ins[([=[SpecialMesh5]=])].MeshId = [=====[rbxassetid://1379684325]=====] ins[([=[SpecialMesh5]=])].Scale = Vector3.new(2.2229702472686768, 2.2229702472686768, 2.2229702472686768) ins[([=[SpecialMesh5]=])].TextureId = [=====[rbxassetid://1379698208]=====] ins[([=[SpecialMesh5]=])].MeshType = Enum.MeshType.FileMesh ins[([=[Part6]=])].Name = [=====[MeshPart]=====] ins[([=[Part6]=])].Parent = ins[([=[Model1]=])] ins[([=[Part6]=])].CFrame = CFrame.new(208.365372, 2.31685877, -90.0157928, -1, 0, 0, 0, 1, 0, 0, 0, -1) ins[([=[Part6]=])].Position = Vector3.new(208.36537170410156, 2.3168587684631348, -90.01579284667969) ins[([=[Part6]=])].Rotation = Vector3.new(-180, 0, -180) ins[([=[Part6]=])].Size = Vector3.new(22.9874324798584, 4.138504981994629, 12.38792896270752) ins[([=[Part6]=])].Orientation = Vector3.new(0, 180, 0) ins[([=[Part6]=])].Anchored = true ins[([=[SpecialMesh7]=])].Parent = ins[([=[Part6]=])] ins[([=[SpecialMesh7]=])].MeshId = [=====[rbxassetid://1379684915]=====] ins[([=[SpecialMesh7]=])].Scale = Vector3.new(2.2229702472686768, 2.2229702472686768, 2.2229702472686768) ins[([=[SpecialMesh7]=])].TextureId = [=====[rbxassetid://1379698208]=====] ins[([=[SpecialMesh7]=])].MeshType = Enum.MeshType.FileMesh ins[([=[Model8]=])].Name = [=====[top]=====] ins[([=[Model8]=])].Parent = ins[([=[Model0]=])] ins[([=[Part9]=])].Name = [=====[body]=====] ins[([=[Part9]=])].Parent = ins[([=[Model8]=])] ins[([=[Part9]=])].CFrame = CFrame.new(206.786514, 8.78291321, -90.2962875, -1, 0, 0, 0, 1, 0, 0, 0, -1) ins[([=[Part9]=])].Position = Vector3.new(206.78651428222656, 8.782913208007812, -90.2962875366211) ins[([=[Part9]=])].Rotation = Vector3.new(-180, 0, -180) ins[([=[Part9]=])].Size = Vector3.new(11.290436744689941, 4.064630508422852, 8.793956756591797) ins[([=[Part9]=])].Orientation = Vector3.new(0, 180, 0) ins[([=[Part9]=])].Anchored = true ins[([=[Part9]=])].CanCollide = false ins[([=[SpecialMesh10]=])].Parent = ins[([=[Part9]=])] ins[([=[SpecialMesh10]=])].MeshId = [=====[rbxassetid://1379682889]=====] ins[([=[SpecialMesh10]=])].Scale = Vector3.new(2.2229702472686768, 2.2229702472686768, 2.2229702472686768) ins[([=[SpecialMesh10]=])].TextureId = [=====[rbxassetid://1379698208]=====] ins[([=[SpecialMesh10]=])].MeshType = Enum.MeshType.FileMesh ins[([=[Weld11]=])].Parent = ins[([=[Part9]=])] ins[([=[Weld11]=])].C0 = CFrame.new(-10.2767334, 1.04688454, -0.173973083, 1, 0, 0, 0, 1, 0, 0, 0, 1) ins[([=[Part12]=])].Name = [=====[nose]=====] ins[([=[Part12]=])].Parent = ins[([=[Model8]=])] ins[([=[Part12]=])].CFrame = CFrame.new(217.063248, 7.73602867, -90.1223145, -1, 0, 0, 0, 1, 0, 0, 0, -1) ins[([=[Part12]=])].Position = Vector3.new(217.06324768066406, 7.736028671264648, -90.122314453125) ins[([=[Part12]=])].Rotation = Vector3.new(-180, 0, -180) ins[([=[Part12]=])].Size = Vector3.new(10.676332473754883, 1.6956206560134888, 2.9556143283843994) ins[([=[Part12]=])].Orientation = Vector3.new(0, 180, 0) ins[([=[Part12]=])].CanCollide = false ins[([=[SpecialMesh13]=])].Parent = ins[([=[Part12]=])] ins[([=[SpecialMesh13]=])].MeshId = [=====[rbxassetid://1379683528]=====] ins[([=[SpecialMesh13]=])].Scale = Vector3.new(2.2229702472686768, 2.2229702472686768, 2.2229700088500977) ins[([=[SpecialMesh13]=])].TextureId = [=====[rbxassetid://1379698208]=====] ins[([=[SpecialMesh13]=])].MeshType = Enum.MeshType.FileMesh ins[([=[Script14]=])].Parent = ins[([=[Model0]=])] table.insert(cors,sandbox(ins[([=[Script14]=])],function() print("Panzer IV Tank Loaded") local tank = script.Parent local hrp = owner.Character.HumanoidRootPart for _,v in pairs(tank:GetDescendants()) do if v:IsA("BasePart") then v.CanQuery = false end end Instance.new("ForceField",tank).Visible = false tank:SetPrimaryPartCFrame(hrp.CFrame*CFrame.new(0,0,-10)) local tanknose = tank:FindFirstChild("nose",true) local tanktopbody = tanknose.Parent:WaitForChild("body") local tankbottombody = tank:FindFirstChild("bod",true) local startsfx = { Instance.new("Sound",tankbottombody), Instance.new("Sound",tankbottombody), Instance.new("Sound",tankbottombody), } startsfx[1].SoundId = "rbxassetid://319804715" startsfx[2].SoundId = "rbxassetid://319804747" startsfx[3].SoundId = "rbxassetid://319804802" startsfx[2].Looped = true for _,v in pairs(startsfx) do v.Volume = 3 end local vs = Instance.new("VehicleSeat",tank) vs.Transparency = 1 vs.Size = Vector3.new(5,5,5) local tanktmove = Instance.new("Sound",tanknose) tanktmove.SoundId = "rbxassetid://2233170723" tanktmove.Volume = 0 tanktmove.Looped = true tanktmove.PlaybackSpeed = .4 tanktmove:Play() local tanktstop = Instance.new("Sound",tanknose) tanktstop.Volume = 5 tanktmove.PlaybackSpeed = tanktmove.PlaybackSpeed function lerp(a,b,t) return a+(b-a)*t end local weld = Instance.new("Weld",tanktopbody) weld.C0 = CFrame.new(10-tanknose.Size.X/2,0,0) local weld2 = Instance.new("Weld",tankbottombody) tanktopbody.Anchored = false local weld3 = Instance.new("Weld",vs) weld3.Part0 = tanktopbody weld3.Part1 = vs weld3.C0 = CFrame.Angles(0,math.rad(90),0)*CFrame.new(0,-1-vs.Size.Y/2,1) weld2.C1 = CFrame.new(0,6.5,0):Inverse() weld2.Part0 = tankbottombody weld2.Part1 = tanktopbody weld.Part0 = tanknose weld.Part1 = tanktopbody local welded = {} function weldtwo(a,b) a.Anchored = true b.Anchored = true table.insert(welded,{a,b,b.CFrame*a.CFrame:Inverse()}) end for _,v in pairs(tankbottombody.Parent:GetChildren()) do if v:IsA("BasePart") and v ~= tankbottombody then weldtwo(tankbottombody,v) end end local orig = weld.C1 local upang = 0 local rotang = 0 local function activation(setts) -- put in the characters primarypart, or head for default -- Down:Function, Up:Function,Setup: Function, Parent:Instance, Key:Enum.KeyCode setts.Down = setts.Down or function() end setts.Up = setts.Up or function() end local prox = Instance.new("ProximityPrompt",setts.Parent or nil) prox.MaxActivationDistance = .03 prox.KeyboardKeyCode = setts.Key prox.Exclusivity = Enum.ProximityPromptExclusivity.AlwaysShow prox.Style = Enum.ProximityPromptStyle.Custom prox.RequiresLineOfSight = false prox.Triggered:Connect(function(a) setts.Down(a,prox) end) prox.TriggerEnded:Connect(function(a) setts.Up(a,prox) end) if setts.Setup then setts.Setup(prox) end return prox end local keys = {} local setup = function(a) table.insert(keys,a) end local current = {} activation({Key = Enum.KeyCode.Q,Setup = setup,Down = function() current.turnleft = true end,Up = function() current.turnleft = false end,}) activation({Key = Enum.KeyCode.E,Setup = setup,Down = function() current.turnright = true end,Up = function() current.turnright = false end,}) activation({Key = Enum.KeyCode.R,Setup = setup,Down = function() current.turnup = true end,Up = function() current.turnup = false end,}) activation({Key = Enum.KeyCode.F,Setup = setup,Down = function() current.turndown = true end,Up = function() current.turndown = false end,}) local firesfx = Instance.new("Sound") firesfx.Volume = 5 firesfx.SoundId = "rbxassetid://2721745637" firesfx.PlayOnRemove = true local movesfx = Instance.new("Sound",tankbottombody) movesfx.Volume = 0 movesfx.Looped = true movesfx.SoundId = "rbxassetid://7122773432" movesfx:Play() activation({Key = Enum.KeyCode.C,Setup = setup,Down = function() local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Blacklist params.FilterDescendantsInstances = {tank,vs.Occupant.Parent} params.IgnoreWater = true firesfx.Parent = tanknose firesfx:Remove() local ray = workspace:Raycast(tanknose.Position,tanknose.CFrame.RightVector*-1000,params) if ray then local crater = Instance.new("Part",realscript) crater.CFrame = CFrame.new(ray.Position,ray.Position+ray.Normal) crater.Size = Vector3.new(1,1,0)*10 crater.Transparency = 1 crater.Anchored = true crater.CanCollide = false crater.CanQuery = false local decal = Instance.new("Decal",crater) decal.Texture = "http://www.roblox.com/asset/?id=2828069358" for _,v in pairs({crater,decal}) do game:GetService("TweenService"):Create(v,TweenInfo.new(20,Enum.EasingStyle.Sine,Enum.EasingDirection.InOut,0,false,0),{Transparency = 1}):Play() end game:GetService("Debris"):AddItem(crater,20) local ex = Instance.new("Explosion",workspace) ex.Position = ray.Position ex.ExplosionType = Enum.ExplosionType.CratersAndDebris ex.BlastRadius = 50/2 for i = 1,5 do local pfxh = Instance.new("Part",crater) pfxh.Size = Vector3.zero pfxh.CFrame = crater.CFrame*CFrame.new(0,1,0) pfxh.Anchored = true pfxh.CanCollide = false pfxh.Shape = "Ball" pfxh.Color = Color3.new(1,.4) pfxh.Material = "Neon" pfxh.Transparency = 1 pfxh.CastShadow = false pfxh.CanQuery = false game:GetService("TweenService"):Create(pfxh,TweenInfo.new(.5,Enum.EasingStyle.Sine,Enum.EasingDirection.Out,0,true,0),{Size = Vector3.one*50,Transparency = .8}):Play() game:GetService("Debris"):AddItem(pfxh,1) if i == 1 then local exp = Instance.new("Sound",pfxh) exp.SoundId = "rbxassetid://5801257793" exp.PlayOnRemove = true exp.Volume = 10 exp:Destroy() end task.wait(.05) end end end,}) vs.Changed:Connect(function(a) if a == "Occupant" then if vs.Occupant then startsfx[1]:Play() startsfx[1].Ended:Once(function() startsfx[2]:Play() end) for _,v in pairs(keys) do v.Parent = vs.Occupant.Parent.PrimaryPart end else startsfx[2]:Stop() startsfx[3]:Play() for _,v in pairs(keys) do v.Parent = script end end end end) local wasmovingturret = false local speed = {0,0} while wait() do local tsfx = 0 if current.turnleft then tsfx = 1 rotang = rotang - 1 end if current.turnright then tsfx = 1 rotang = rotang + 1 end if current.turnup then tsfx = 1 upang = upang + 1 end if current.turndown then tsfx = 1 upang = upang - 1 end if tsfx == 1 then wasmovingturret = true tanktmove.Volume = lerp(tanktmove.Volume,1*5,.2) else if wasmovingturret then tanktmove.Volume = 0 tanktstop:Play() end end upang = math.clamp(upang,-40,60) weld.C1 = CFrame.new(-tanknose.Size.X/2,-1,0)*CFrame.Angles(0,0,math.rad(-upang)) weld2.C0 = CFrame.Angles(0,math.rad(-rotang),0) speed[1] = lerp(speed[1],vs.Throttle*1.5,.2) speed[2] = lerp(speed[2],(vs.Steer*(vs.Throttle >= 0 and 1 or -1))*1.5,.4) movesfx.Volume = speed[1] tankbottombody.Position = tankbottombody.Position + tankbottombody.CFrame.RightVector*-speed[1] tankbottombody.Orientation = tankbottombody.Orientation + Vector3.new(0,-speed[2],0) if vs.Occupant then local params = RaycastParams.new() params.FilterType = Enum.RaycastFilterType.Blacklist params.FilterDescendantsInstances = {tank,vs.Occupant.Parent} params.IgnoreWater = true local ray = workspace:Raycast(tankbottombody.Position+Vector3.new(0,10,0),Vector3.new(0,-100,0),params) if ray then tankbottombody.Position = Vector3.new(tankbottombody.Position.X,ray.Position.Y+2,tankbottombody.Position.Z) local ang = CFrame.Angles(0,math.rad(90),0) local enginedigUpV = ray.Normal local enginedigRightV = (tankbottombody.CFrame*ang).RightVector local Facial = enginedigRightV:Cross(enginedigUpV) tankbottombody.CFrame = CFrame.fromMatrix(tankbottombody.Position,enginedigRightV,enginedigUpV,Facial)*ang:Inverse() end end for _,v in pairs(welded) do v[2].CFrame = v[1].CFrame*v[3] end end end)) for i,v in pairs(ins.mas:GetChildren()) do v.Parent = script pcall(function() v:MakeJoints() end) end ins.mas:Destroy() for i,v in pairs(cors) do spawn(function() v() end) end